package com.project.mapper;

import com.project.bean.OrderBean;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Update;

import java.time.LocalDate;
import java.util.List;

/**
 * 订单业务成接口
 */
public interface IOrderMapper {
    /**
     * 添加订单
     * @param order
     */
    public void addOrder(@Param("order") OrderBean order,@Param("userId") int userId);

    /**
     * 管理员动态查询订单
     * 动态分页查询所有订单信息
     * 同时查询出所有订单
     * @param status        状态
     * @param startDate     下单开始日期
     * @param endDate       下单结束日期
     * @param userId        Integer,当没有用户的时候返回为空（在mapper里面判断一下），int 不可以为空
     * @return              分页对象
     */
    public List<OrderBean>findByItem(@Param("status") String status,@Param("startDate") LocalDate startDate,@Param("endDate") LocalDate endDate,@Param("userId") Integer userId);


    /**
     * 查询订单的详情，同时查询订单的明细信息，在订单明细中需要查询商品信息
     * @param id    订单id
     * @return      订单对象
     */
    public OrderBean findById(int id);

    /**
     * 管理员发货，将该订单的状态修改为“发货中”
     * @param id    订单id
     * @param订单集合
     */
    @Update("update t_order set o_status='发货中' where pk_orderId=#{id}")
    public void send(int id);


    /**
     * 查询所有“发货中”的订单
     */
    public List<OrderBean>findByItemStatus();


    /**
     * 送货员结账，将该订单的状态修改为“已完结”
     * @param id
     */
    @Update("update t_order set o_status='已完结' where pk_orderId=#{id}")
    public void finish(int id);
}
